package qplayas

class PlayaJobService {

    static transactional = true

    def savePlaya(beachData) {
		/* ------------------- CARACTERISTICAS GENERALES --------------------- */
		def caracteristicas = new Caracteristicas(
			longitud:beachData.get('longitudPlaya')?.replace('metros','')?.trim(),
			anchura:beachData.get('anchuraMedia')?.replace('metros','')?.trim(),
			gradoOcupacion:beachData.get('gradoOcupacion'),
			paseoMaritimo:beachData.get('paseoMaritimo')?.equalsIgnoreCase("si") ? true : false
		)
		/* ----------------------------- TIPO --------------------- */
		def tipo = new Tipo(
			composicion: beachData.get('composicion'),
			tipoArena: beachData.get('tipoArena'),
			condicionesBano: beachData.get('condicionesBano'),
			nudista: beachData.get('nudista')?.equalsIgnoreCase("si") ? true :false,
			zonaFondeo : beachData.get('zonaDeFondeo')?.equalsIgnoreCase("si") ? true :false
		)
		/* ----------------------------- ACCESO --------------------- */
		def acceso = new Acceso(
			tipo:beachData.get('tipoDeAcceso'),
			senalizacion:beachData.get('senalizacionDeLosAccesos'),
			minusvalidos:beachData.get('accesosMinusvalidos')?.equalsIgnoreCase("si") ? true :false
		)
		
		/* ----------------------------- TRANSPORTE ------------------ */
		def transporte = new Transporte(
			autobus:beachData.get('autobus'),
			aparcamiento:beachData.get('aparcamiento')
		)
		/* ----------------------------- HOSPITAL --------------------- */
		def hospital = new Hospital(
			nombre:beachData.get('nombre'),
			direccion:beachData.get('direccion'),
			//	 	telefono:beachData.get('telefono'),
			distanciaPlaya:beachData.get('distanciaAproximadaAPlaya')?.replaceAll('Km','')?.trim()
		)
		/* --------------------------- SEGURIDAD -------------------------*/
		def seguridad = new Seguridad(
			vigilancia:beachData.get('equipoDeVigilancia')?.equalsIgnoreCase("si") ? true :false,
			senalPeligro:beachData.get('senalizacionDePeligro')?.equalsIgnoreCase("si") ? true :false,
			policiaLocal:beachData.get('policiaLocal')?.equalsIgnoreCase("si") ? true :false,
			puestoCruzRoja:beachData.get('puestoCruzRoja')?.equalsIgnoreCase("si") ? true :false,
			equipoSalvamento:beachData.get('equipoSalvamento')?.equalsIgnoreCase("si") ? true :false
		)
		/* -------------------------- TURISMO ------------------------------*/
		def turismo = new Turismo(
			oficina:beachData.get('oficinaDeTurismo')?.equalsIgnoreCase("si") ? true :false,
			correoElectronico:beachData.get('telefono')
		)
		
		/**/
		def servicios = new Servicios(
			aseos:beachData.get('aseos')?.equalsIgnoreCase("si") ? true :false,
			duchas:beachData.get('duchas')?.equalsIgnoreCase("si") ? true :false,
			//	 	telefonos:beachData.get('oficinaDeTurismo')?.equalsIgnoreCase("si") ? true :false,
			papeleras:beachData.get('papeleras')?.equalsIgnoreCase("si") ? true :false,
			servicioLimpieza:beachData.get('servicioDeLimpieza')?.equalsIgnoreCase("si") ? true :false,
			pasarelaAcceso:beachData.get('pasarelasAcceso')?.equalsIgnoreCase("si") ? true :false,
			alquilerSombrilla:beachData.get('alquilerDeSombrillas')?.equalsIgnoreCase("si") ? true :false,
			alquilerHamaca:beachData.get('alquilerDeHamacas')?.equalsIgnoreCase("si") ? true :false,
			alquilerNautico:beachData.get('alquilerDeNauticos')?.equalsIgnoreCase("si") ? true :false,
			kioskosBalnearios:beachData.get('kioskosBalnearios')?.equalsIgnoreCase("si") ? true :false,
			clubNautico:beachData.get('clubNautico')?.equalsIgnoreCase("si") ? true :false,
			zonaSubmarinismo:beachData.get('zonaSubmarinismo')?.equalsIgnoreCase("si") ? true :false,
			puertoDeportivo:beachData.get('puertoDeportivo')
		)
		/*-------*/
		def medioambiente = new Medioambiente(
			presenciaVegetacion:beachData.get('presenciaVegetacion')?.equalsIgnoreCase("si") ? true :false,
			zonaProtegida:beachData.get('zonaProtegida')?.equalsIgnoreCase("si") ? true :false,
			banderaAzul:beachData.get('banderaAzul')?.equalsIgnoreCase("si") ? true :false
		)
		/* ---------------------------- PLAYA --------------------- */
		def imagenes = beachData.get('photos').findAll{it}.collect{
			new PlayaImage(imageUrl:it)
		}
		def playa = new Playa(
			nombre: beachData.get('beachName'),
			localidad: beachData.get('localidad'),
			nombreNormalizado: beachData.get('normalizedBeachName'),
			provincia: beachData.get('provincia'),
			imagenes: imagenes,
			comunidad:beachData.get('comunidad'),
			caracteristicas: caracteristicas,
			tipo:tipo,
			acceso: acceso,
			transporte : transporte,
			hospital:hospital,
			seguridad:seguridad,
			turismo:turismo,
			servicios:servicios,
			medioambiente:medioambiente
		)


		if (playa.save()){
			println "Playa ${beachData.get('beachName')} agregada"
		} else {
			println ("-"*20)
			playa.errors.allErrors.each{println it.defaultMessage}
			println ("-"*20)
		}
	}    
}
